/*
 * @lc app=leetcode.cn id=56 lang=javascript
 *
 * [56] 合并区间
 */

// @lc code=start
/**
 * @param {number[][]} intervals
 * @return {number[][]}
 */
// 先按第一个数的从小到大排序
// 记录当前需要合并的curitem,
// 如果curitem[1]<intervals[i][0]或者
// curitem[0] > intervals[i][1],就不能合并
// 之外的情况都可以合并，可以合并更新curItem,
// 不可以合并就把curItem，push进res
// 否则跟新curItem为下一个元素
var merge = function(intervals) {
  if (intervals.length === 1) return intervals
  intervals.sort((a, b) => a[0] - b[0])
  let res = []
  let curItem = intervals[0]
  for (let i = 1; i < intervals.length; i++) {
    let item = intervals[i]
    // 可以合并
    if (!(curItem[1] < item[0]) && !(item[1] < curItem[0])) {
      let start = curItem[0] > item[0] ? item[0] : curItem[0]
      let end = curItem[1] > item[1] ? curItem[1] : item[1]
      curItem = [start, end]
    } else {
      res.push(curItem)
      curItem = item
    }
  }
  res.push(curItem)
  return res
};
// @lc code=end

